package E_2024;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/*
    给定两个字符串str1和str2，
    str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串，
    请返回子串在str2的起始位置，若不是关联子串则返回-1。
示例1 输入输出示例仅供调试，后台判题数据一般不包含示例
输入
    abc efghicbaiii
输出
    5
示例2 输入输出示例仅供调试，后台判题数据一般不包含示例
输入
    abc efghiccaiii
输出
    -1
 */
public class E_100_52 {
    public static void main(String[] args) {
        System.out.println(ans("abc","efghicbaiii"));
        System.out.println(ans("abc","efghiccbaiii"));
        System.out.println(ans("abc","efghiccaiii"));
        System.out.println(ans("abc","efghicbcaiii"));
    }
    public static int ans(String target, String source){
        int[] targetInt = new int[26];
        for (int i = 0; i < target.length(); i++) {
            int x = target.charAt(i) - 'a';
            targetInt[x] = targetInt[x]  + 1;
        }
        for (int i = 0; i < source.length(); i++) {
            char ch = source.charAt(i);
            if (targetInt[ch - 'a'] != 0){
                int[] temp = targetInt.clone();
                int length = 0;
                do{
                    temp[ch - 'a']--;
                    length++;
                    ch = source.charAt(i+length);
                }while(temp[ch - 'a'] != 0);
                if (length == target.length()) return i;
            }
        }
        return -1;
    }
}
